Skip to content

feat(media): cap group-room media by default - #752

Merged
wesm merged 1 commit into
kenn-io:mainfrom
salmonumbrella:feat/issue-634-media-defaults
Sep 4, 2026
Merged

feat(media): cap group-room media by default#752
wesm merged 1 commit into
kenn-io:mainfrom
salmonumbrella:feat/issue-634-media-defaults

Conversation

@salmonumbrella

Copy link
Copy Markdown
Contributor

What changed

  • Beeper, Slack, Discord, and Teams skip attachment downloads from conversations with more than 20 participants by default. Direct chats and small groups keep their media; skipped occurrences carry the typed participant_threshold marker, so backfill does not retry them until the cap changes. An explicit media_max_participants = 0 still means no cap.
  • The per-attachment size default for Beeper, Slack, and Teams moves from 100 MiB to 250 MiB, with one shared constant behind the config layer and the importer fallbacks. Discord stays at 50 MiB. This is a separate commit and can be dropped independently.
  • The configuration reference now documents the scoped media policy vocabulary that shipped without docs: media_scope, media_max_participants, max_media_mb, accounts_config, the per-guild Discord overrides, and a new [teams] section. The Beeper, Slack, Discord, and Teams usage pages describe the defaults.

Why

Most attachment bytes in a real chat archive come from large rooms whose forwarded videos nobody wants kept, while the media worth keeping lives in direct chats and small groups. Capping group-room media by default keeps a fresh install from filling its disk with that volume, and once that volume is gone the low size cap no longer needs to act as a brake, so long voice notes, screen recordings, and phone video from direct chats fit.

Refs #634
Refs #620 #632

Usage

Nothing to do for the defaults. To collect from every room, or to change the caps:

[beeper]
media_max_participants = 0   # no participant cap
max_media_mb = 500

[slack.accounts_config.T0123456]
media = false                # never download from one workspace

Media already stored under an earlier policy stays until msgvault purge-excluded-media runs; a raised cap makes the next backfill-*-media run retry files that now fit.

🤖 Generated with Claude Code

@roborev-ci

roborev-ci Bot commented Sep 3, 2026

Copy link
Copy Markdown

roborev: Combined Review (7add6c7)

Verdict: No medium-or-higher severity issues found; the code is clean.

The only reported issue was low severity and is omitted.


Reviewers: 2 done | Synthesis: codex, 5s | Total: 5m58s

@wesm

wesm commented Sep 4, 2026

Copy link
Copy Markdown
Member

rebasing

@wesm wesm self-assigned this Sep 4, 2026
Beeper, Slack, Discord, and Teams now skip attachment downloads from
conversations with more than 20 participants unless the operator sets
media_max_participants. This keeps high-volume group rooms from consuming
the archive's media budget while direct chats and small groups keep their
media.

An explicit media_max_participants = 0 still disables the cap. Skipped
occurrences keep the participant_threshold marker, so backfill retries them
only after the cap changes.

This squashed change also includes:

- feat(media): raise the chat media size default to 250 MiB

The higher Beeper, Slack, and Teams size limit keeps long voice notes, screen
recordings, and phone video from direct chats. Discord keeps its 50 MiB
default, and an explicit max_media_mb remains unchanged.

Refs kenn-io#634 kenn-io#620 kenn-io#632 kenn-io#648

Generated with Codex
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Codex <noreply@openai.com>
@wesm
wesm force-pushed the feat/issue-634-media-defaults branch from 7add6c7 to 39a2da0 Compare September 4, 2026 02:36
@roborev-ci

roborev-ci Bot commented Sep 4, 2026

Copy link
Copy Markdown

roborev: Combined Review (39a2da0)

Verdict: No medium, high, or critical issues found.

The only reported issue was low severity and is omitted per the requested criteria.


Reviewers: 2 done | Synthesis: codex, 5s | Total: 4m46s

@wesm
wesm merged commit 8a79465 into kenn-io:main Sep 4, 2026
25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants